perm filename 5[CRE,BGB] blob sn#021795 filedate 1973-01-25 generic text, type T, neo UTF8
00100	II. FILE FORMATS.
00200		A. Television Image Format.
00300		B. Region/Edge Image Format.
00400	
00500	A. Television Image Format.
00600	
00700		The standard Cart's Eye television image is
00800	216 rows of 288 columns of 4 bits per pixel.
00900	
01000	B. Contour/Region/Edge Image Format.
01100	
01200		The  image format, CRE, is essentially a core dump
01300	of CRE's internal node/link data structure. There are  eight kinds
01400	of  nodes  and the nodes are  fixed  sized  at six  words  per node.
01500	
01600	From  the  top,  the  first  node of a file  is always a "FILM" node.
01700	The  head  of  a  film  node  points to  a  ring  of  "IMAGE"  nodes.
01800	The head of  an  image  node  points  to a  ring  of  "LEVEL"  nodes.
01900	The head of a  level  node  points  to  a  ring  of "POLYGON"  nodes.
02000	The head of  a  polygon  node  points  to  a  ring  of "EDGE"  nodes.
02100	And  edge  nodes  do not have a head pointer.  Which is equivalent to
02200	saying that a file contains a film, a film is composed of images,  an
02300	image  is  composed  of levels, a level is composed of polygons and a
02400	polygon is composed of edges.
02500	
02600		Now the detailed explanation will proceed bottom-up, starting
02700	with the most numerous edge nodes.
02800	
02900		File names are accepted in the usual DEC format of name, dot,
03000	extension,  left  square  bracket,  project, comma, programmer, right
03100	square bracket, carriage return line feed. Where the filename is from
03200	one  to  six characters; and the extension project and programmer are
03300	from  one  to  three  characters.  Everything  but  the  filename  is
03400	optional.
     

00100	V. SAIL INTERFACING.
00200	
00300		It should be possible to embed the CRE machine code  under  a
00400	SAIL  core  image;  however  I do not intend to do this work. For the
00500	present, the CRE interface to SAIL is only realized via a  disk  file
00600	transfer  of  the  data  structures.  A  CRE file may be read into an
00700	integer array in binary mode as illustrated below.
00800	
00900		The  first  word  of a CRE file is the first word of the film
01000	node which contains the size of the file in words. The film node  has
01100	address  0;  the  next node has address 7; and so on in multiplies of
01200	seven.  There are no empty nodes in a CRE file.  The  following  SAIL
01300	program will read in a CRE file named X:
01400	
01500		COMMENT EXAMPLE OF SAIL INPUT OF A CRE FILE;
01600		BEGIN	"TEST"
01700			INTEGER SIZE;
01800			OPEN(1,"DSK",8,3,0,0,0,0);
01900			LOOKUP(1,"X.CRE",0);
02000			SIZE ← WORDIN(1);
02100		BEGIN
02200			INTEGER ARRAY NODE[0:SIZE];
02300			ARRYIN(1,NODE[1],SIZE-1);
02400			RELEASE(1);
02500			"MAIN PROGRAM.";
02600		END;
02700		END;
02800	
02900	After the NODE array is loaded, CRE links and data may be accessed by
03000	their  document names in a reasonible node-link notation using macros
03100	like the following:
03200	
03300		DEFINE CW(Q)  = "(NODE[Q] LSH -18)";
03400		DEFINE CCW(Q) = "(NODE[Q] LAND '777777)";
03500		DEFINE DAD(Q) = "(NODE[Q+1] LSH -18)";
03600		DEFINE SON(Q) = "(NODE[Q+1] LAND '777777)";
03700	
03800	So  that  the first vertex of the first polygon of the first level of
03900	the first image of the film can be obtained:
04000	
04100		INTEGER FILM,IMAGE,LEVEL,POLYGON,VERTEX;
04200	
04300		FILM ← NODE[0];
04400		LEVEL ← SON(FILM);
04500		POLYGON ← SON(LEVEL);
04600		VERTEX ← SON(POLYGON);
04700	
04800	The  user may note that SAIL will compile three or more instructuions
04900	for what is known as a PDP-10 halfword operation; also  if  the  user
05000	converts  the  CRE  nodes  and links into LEAP items and associations
05100	then an  overhead  of  from  ten  to  one  hundred  instructions  per
05200	"halfword operation" will be incurred.
     

00100	VI. EDITORIAL REMARKS.
00200	
00300	
00400	1.	
00500		The version of CRE discussed in this document is known  to
00600	me  as the third, or the version of Christmas-72. CAREYE-I of '68 and
00700	'69 was embedded in  LISP  and  contained  thresholding,  bit  raster
00800	operations,  and  a  polygon trace routine. CAREYE-II was embedded in
00900	SAIL, and in early forms even used LEAP. Both CAREYE-I and  CAREYE-II
01000	were   built   around   the  notion  of  "windowing".  CAREYE-IV,  of
01100	Thanksgiving-72 was was scan line oriented.
01200	
01300	
01400	3.
01500		It is my impression that all the so called "scientific" ideas
01600	in CRE have appeared elsewhere. In particular, I was aware of  and
01700	kind   of  liked  the  work  of  Krakauer,  Zahn,  and  Mc  Cormick's
01800	ILLAIC-III.  Also, I was aware of and disliked the work of Pingle and
01900	Hueckel.  I  wish  to  acknowledge  all these people from whom I have
02000	borrowed ideas, both positive and negative.  On  the  other  hand,  I
02100	alone wrote and developed all the code in CRE.
02200	
02800	
02900	6. ANTI VARIABLE WINDOWING.
03000	
03100		The  requirement  that  a vision program must handle variable
03200	sized windows is a very severe limitation which I believe has  bogged
03300	down many potentially good image processing ideas in a morass of word
03400	packing, array binding, window splicing, and cost  optimization;  all
03500	of which matters are not directly relevant to image processing.
03600	
03700	7. ANTI VISUAL FEEDBACK ON THE TACTICAL LEVEL.
03800	
03900		It  has become a banal truism in computer vision reseach that
04000	a  vision  system  must  have  feedback,  accomodation,   prediction,
04100	verification, and higher level knowledge. The pursuit of this visual
04200	feedback format seems to lead one to work solely on building a forest
04300	without worrying about how to build a tree.
04400	
04500	8. ANTI HIGHER LEVEL LANGUAGES & PRO MACHINE CODE.
04600	
04700		Another banal truism in AI is that a  higher  level  language
04800	allows   rapid  implementation  and  experimental  change  of  poorly
04900	understood algorithms.
     

00100	CODE DOCUMENTATION.
00200	
00300		The CRE code uses additional PDP-10 mnemonics for the sake of
00400	pronouciation  and  brevity.  The  mnemonics  stem from ancient PDP-1
00500	nomenclature; in the PDP-10 the left half  word  is  the  instruction
00600	part  and  the right half word is the address part. The codes CAR and
00700	CDR are traditional LISP names, derived  from  IBM-709  nomenclature;
00800	CAR  and  CDR  are appropriate PDP-6/10 op codes because according to
00900	Kotok,the machine was designed to facilitate LISP.
01000	
01100		HLR	LIP	Load Instruction Part.
01200		HRR	LAP	Load Address     Part.
01300		HRLM	DIP	Deposit in Instruction Part.
01400		HRRM	DAP	Deposit in Instruction Part.
01500	
01600		HRRZS	ZIP	Zero Instruction Part.
01700		HLLZS	ZAP	Zero   Address   Part.
01800		HRROS	WIP	W'ones to Instruction Part.
01900		HLLOS	WAP	W'ones to   Address   Part.
02000	
02100		HLRZ	CAR	Contents Address Register.
02200		HRLI	LIPI	Load Instruction Part Immediate.
02300		HRRI	LAPI	Load   Address   Part Immediate.
02400		HRLZM	DIPZ	Deposit into Instruction Part with Zeroes.
02500		
02600		HRRZ	CDR	Contents Decrement Register.
02700		MOVEI	LACI	Load Accumulator Immediate.
02800		MOVSI	SLACI	Swap Load Accumulator Immediate.
02900		HRRZM	DAPZ	Deposit into Address Part with Zeroes.
03000		
03100		MOVE	LAC	Load Accumulator.
03200		MOVN	LACN	Load Accumulator Negative.
03300		MOVM	LACM	Load Accumulator Magnitude.
03400		MOVS	SLAC	Swap Load Accumulator.
03500		
03600		MOVEM	DAC	Deposit Accumulator into memory.
03700		MOVNM	DACN	Deposit Accumulator Negative.
03800		MOVMM	DACM	Deposit Accumulator Magnitude.
03900		MOVSM	SDAC	Swap Deposit Accumulator.
04000		
04100		HLRE	NIP	Number from Instruction Part.
04200		HRRE	NAP	Number from   Address   Part.
04300		HRREI	NIM	Number Immediate.
04400		JRST	GO	Load program counter immediate.
     

00100	REFERENCES.
00200	
00300		KNUTH
00400		KRAKAUER
00500		GEOMED SAILON
00600		WINGED EDGE PAPER